(function(c) {
    var b, e, a = [],
    d = window;
    c.fn.tinymce = function(j) {
        var p = this,
        g, k, h, m, i, l = "",
        n = "";
        if (!p.length) {
            return p
        }
        if (!j) {
            return tinyMCE.get(p[0].id)
        }
        p.css("visibility", "hidden");
        function o() {
            var r = [],
            q = 0;
            if (f) {
                f();
                f = null
            }
            p.each(function(t, u) {
                var s, w = u.id,
                v = j.oninit;
                if (!w) {
                    u.id = w = tinymce.DOM.uniqueId()
                }
                s = new tinymce.Editor(w, j);
                r.push(s);
                s.onInit.add(function() {
                    var x, y = v;
                    p.css("visibility", "");
                    if (v) {
                        if (++q == r.length) {
                            if (tinymce.is(y, "string")) {
                                x = (y.indexOf(".") === -1) ? null: tinymce.resolve(y.replace(/\.\w+$/, ""));
                                y = tinymce.resolve(y)
                            }
                            y.apply(x || tinymce, r)
                        }
                    }
                })
            });
            c.each(r,
            function(t, s) {
                s.render()
            })
        }
        if (!d.tinymce && !e && (g = j.script_url)) {
            e = 1;
            h = g.substring(0, g.lastIndexOf("/"));
            if (/_(src|dev)\.js/g.test(g)) {
                n = "_src"
            }
            m = g.lastIndexOf("?");
            if (m != -1) {
                l = g.substring(m + 1)
            }
            d.tinyMCEPreInit = d.tinyMCEPreInit || {
                base: h,
                suffix: n,
                query: l
            };
            if (g.indexOf("gzip") != -1) {
                i = j.language || "en";
                g = g + (/\?/.test(g) ? "&": "?") + "js=true&core=true&suffix=" + escape(n) + "&themes=" + escape(j.theme) + "&plugins=" + escape(j.plugins) + "&languages=" + i;
                if (!d.tinyMCE_GZ) {
                    tinyMCE_GZ = {
                        start: function() {
                            tinymce.suffix = n;
                            function q(r) {
                                tinymce.ScriptLoader.markDone(tinyMCE.baseURI.toAbsolute(r))
                            }
                            q("langs/" + i + ".js");
                            q("themes/" + j.theme + "/editor_template" + n + ".js");
                            q("themes/" + j.theme + "/langs/" + i + ".js");
                            c.each(j.plugins.split(","),
                            function(s, r) {
                                if (r) {
                                    q("plugins/" + r + "/editor_plugin" + n + ".js");
                                    q("plugins/" + r + "/langs/" + i + ".js")
                                }
                            })
                        },
                        end: function() {}
                    }
                }
            }
            c.ajax({
                type: "GET",
                url: g,
                dataType: "script",
                cache: true,
                success: function() {
                    tinymce.dom.Event.domLoaded = 1;
                    e = 2;
                    if (j.script_loaded) {
                        j.script_loaded()
                    }
                    o();
                    c.each(a,
                    function(q, r) {
                        r()
                    })
                }
            })
        } else {
            if (e === 1) {
                a.push(o)
            } else {
                o()
            }
        }
        return p
    };
    c.extend(c.expr[":"], {
        tinymce: function(g) {
            return !! (g.id && "tinyMCE" in window && tinyMCE.get(g.id))
        }
    });
    function f() {
        function i(l) {
            if (l === "remove") {
                this.each(function(n, o) {
                    var m = h(o);
                    if (m) {
                        m.remove()
                    }
                })
            }
            this.find("span.mceEditor,div.mceEditor").each(function(n, o) {
                var m = tinyMCE.get(o.id.replace(/_parent$/, ""));
                if (m) {
                    m.remove()
                }
            })
        }
        function k(n) {
            var m = this,
            l;
            if (n !== b) {
                i.call(m);
                m.each(function(p, q) {
                    var o;
                    if (o = tinyMCE.get(q.id)) {
                        o.setContent(n)
                    }
                })
            } else {
                if (m.length > 0) {
                    if (l = tinyMCE.get(m[0].id)) {
                        return l.getContent()
                    }
                }
            }
        }
        function h(m) {
            var l = null; (m) && (m.id) && (d.tinymce) && (l = tinyMCE.get(m.id));
            return l
        }
        function g(l) {
            return !! ((l) && (l.length) && (d.tinymce) && (l.is(":tinymce")))
        }
        var j = {};
        c.each(["text", "html", "val"],
        function(n, l) {
            var o = j[l] = c.fn[l],
            m = (l === "text");
            c.fn[l] = function(s) {
                var p = this;
                if (!g(p)) {
                    return o.apply(p, arguments)
                }
                if (s !== b) {
                    k.call(p.filter(":tinymce"), s);
                    o.apply(p.not(":tinymce"), arguments);
                    return p
                } else {
                    var r = "";
                    var q = arguments; (m ? p: p.eq(0)).each(function(u, v) {
                        var t = h(v);
                        r += t ? (m ? t.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g, "") : t.getContent({
                            save: true
                        })) : o.apply(c(v), q)
                    });
                    return r
                }
            }
        });
        c.each(["append", "prepend"],
        function(n, m) {
            var o = j[m] = c.fn[m],
            l = (m === "prepend");
            c.fn[m] = function(q) {
                var p = this;
                if (!g(p)) {
                    return o.apply(p, arguments)
                }
                if (q !== b) {
                    p.filter(":tinymce").each(function(s, t) {
                        var r = h(t);
                        r && r.setContent(l ? q + r.getContent() : r.getContent() + q)
                    });
                    o.apply(p.not(":tinymce"), arguments);
                    return p
                }
            }
        });
        c.each(["remove", "replaceWith", "replaceAll", "empty"],
        function(m, l) {
            var n = j[l] = c.fn[l];
            c.fn[l] = function() {
                i.call(this, l);
                return n.apply(this, arguments)
            }
        });
        j.attr = c.fn.attr;
        c.fn.attr = function(o, q) {
            var m = this,
            n = arguments;
            if ((!o) || (o !== "value") || (!g(m))) {
                if (q !== b) {
                    return j.attr.apply(m, n)
                } else {
                    return j.attr.apply(m, n)
                }
            }
            if (q !== b) {
                k.call(m.filter(":tinymce"), q);
                j.attr.apply(m.not(":tinymce"), n);
                return m
            } else {
                var p = m[0],
                l = h(p);
                return l ? l.getContent({
                    save: true
                }) : j.attr.apply(c(p), n)
            }
        }
    }
})(jQuery);